
#include "ListeTemp.h"


ListeTempQ * creerListeTempQ()
{
    ListeTempQ * LTQ = (ListeTempQ*)malloc(sizeof(ListeTempQ));
    initListeTempQ(LTQ);
    return LTQ;
}

void initListeTempQ(ListeTempQ * Liste)
{
	Liste->taille_utilisee = 0;
	Liste->capacite = 1;
	Liste->tab = malloc(sizeof(Question*)*Liste->capacite);
}

void libereListeTempQ(ListeTempQ * Liste)
{
	int i;
	int j = nbrElementListeQ(Liste);
	for(i=j-1;i>=0;i--)
    {
        detruitQuestion(&Liste->tab[i]);
		Liste->taille_utilisee-=1;
    }
	Liste->taille_utilisee = 0;
	Liste->capacite = 0;
	free(Liste->tab);
}
void detruitListeTempQ(ListeTempQ ** Liste)
{
    libereListeTempQ(*Liste);
    free(*Liste);
    *Liste = NULL;
}
void ajouterQuestion(ListeTempQ * Liste)
{
	int i;
	Liste->taille_utilisee++;

	if(Liste->taille_utilisee > Liste->capacite/3)
	{
		Question **temp = Liste->tab;
		Liste->capacite*=2;
		Liste->tab = malloc(sizeof(Question*)*Liste->capacite);
		for(i=0;i<Liste->taille_utilisee;i++)
			Liste->tab[i] = temp[i];
		free(temp);
	}
	Liste->tab[Liste->taille_utilisee-1] = creerQuestion();
}

void supprimerElementListe(ListeTempQ * Liste, int position)
{
	if((position<0)||(position>Liste->taille_utilisee-1))
		exit(EXIT_FAILURE);
	else
	{
		int i;
		if(position < Liste->taille_utilisee-1)
        {
            for(i=position;i<Liste->taille_utilisee-1;i++)
            {
                Liste->tab[i] = Liste->tab[i+1];
            }
        }

       /* libereQuestion(&Liste->tab[Liste->taille_utilisee-1]);*/

		Liste->taille_utilisee--;
		if(Liste->taille_utilisee < Liste->capacite/3)
		{
			Question **temp = Liste->tab;
			Liste->capacite/=2;
			Liste->tab = malloc(sizeof(Question*)*Liste->capacite);
			for(i=0;i<Liste->taille_utilisee;i++)
				Liste->tab[i] = temp[i];
			free(temp);
		}
	}
}

int nbrElementListeQ(const ListeTempQ * liste)
{
    return liste->taille_utilisee;
}


void remplirQuestFichier(FILE * fic, ListeTempQ * ListeQ)
{
    int i, j, k, nbrLignes, nbQuestion;
    char *temp = malloc(sizeof(char)*128);

    assert(fic != NULL);

    nbrLignes = nbLigne(fic);
    rewind(fic);

    assert(nbrLignes%6 == 0);
    nbQuestion = nbrLignes/6;

    for(i=0;i<nbQuestion;i++)
    {
        ajouterQuestion(ListeQ);
        fgets(ListeQ->tab[i]->Quest,128,fic);
        k=0;
        while(ListeQ->tab[i]->Quest[k] != '\n')
            k++;
        ListeQ->tab[i]->Quest[k] = ' \0';

        for(j=0;j<4;j++)
        {
            fgets(ListeQ->tab[i]->tabRep[j]->rep, 128, fic);
            /*k=0;
            while(liste->listeQuest[i]->tabRep[j]->rep[k] != '\n')
                k++;
            liste->listeQuest[i]->tabRep[j]->rep[k] = ' ';*/

            if(j==0)
                ListeQ->tab[i]->tabRep[j]->VF = true;
        }

        fgets(temp, 64, fic);
    }
    free(temp);
    printf(" okay *\n");

}
